/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package Tokens;

import Util.CaracterNaoAceito;
import Util.ComentarioMalFormado;
import Util.NumeroMalFormado;

/**
 *
 * @author Danilo
 */
public class FabricaToken {

    private static final String ERRO = "erro";
    private static final String NUMEROMAUFORMADO = "NumeroMauFormado";
    private static final String COMENTARIOMALFORMADO = "ComentarioMauFormado";
    private static final String COMENTARIO = "Comentario";
    private static final String IDENTIFICADOR = "Indentificador";
    private static final String NUMEROINTEIRO = "NumeroInteiro";
    private static final String NUMEROREAL = "NumeroReal";
    private static final String SIMBOLO = "Simbolo";
    private static final String PALAVRARESERVADA = "PalavraReservada";
    private static final String CARACTERNAOACEITO = "CaracterNaoAceito";
    private static final String FIMDEARQUIVO = "FimDeArquivo";
 
    public static Token returnToken(String cadeia, String tipo, Integer linha, Integer coluna) {
        switch (tipo) {
            case COMENTARIO:
                Comentario com = new Comentario(cadeia, linha, coluna);
                return com;
            case IDENTIFICADOR:
                Identificador ind = new Identificador(cadeia, linha, coluna);
                return ind;
            case NUMEROINTEIRO:
                NumeroInteiro inteiro = new NumeroInteiro(cadeia, linha, coluna);
                return inteiro;
            case NUMEROREAL:
                NumeroReal nr = new NumeroReal(cadeia, linha, coluna);
                return nr;
            case PALAVRARESERVADA:
                PalavrasReservadas pr = new PalavrasReservadas(cadeia, linha, coluna);
                return pr;
            case SIMBOLO:
                Simbolo sm = new Simbolo(cadeia, linha, coluna);
                return sm;
            case NUMEROMAUFORMADO:
                NumeroMalFormado nmf = new NumeroMalFormado(cadeia, linha, coluna);
                return nmf;
            case COMENTARIOMALFORMADO:
                ComentarioMalFormado com2 = new ComentarioMalFormado(cadeia, linha, coluna);
                return com2;
            case CARACTERNAOACEITO:
                CaracterNaoAceito cn = new CaracterNaoAceito(cadeia, linha, coluna);
                return cn;
            case FIMDEARQUIVO:
                FimDeArquivo fa = new FimDeArquivo(cadeia, linha, coluna);
                return fa;
        }
        return null;
    }
}
